Datacube
Catalogue
DataCube 是一种用于表示多维数据的抽象模型。它将数据组织成一个多维结构,通常包含:
- 维度(Dimensions):描述数据的视角,如时间、地点、产品、客户等。
- 度量(Measures):可量化的数值,如销售额、数量、利润等。
例如,一个销售数据的 DataCube 可能包含:
- 维度:时间(年、月、日)、地区(国家、城市)、产品(类别、型号)
- 度量:销售额、销售数量
DataCube 是一个跨行业、跨系统的通用建模概念.
商业智能(BI)系统:如 Tableau、Power BI、QlikView- 数据仓库:如 Kimball 维度建模中的星型模型、雪花模型都基于 DataCube 思想
OLAP 系统:MOLAP(多维 OLAP)、ROLAP(关系型 OLAP)都依赖 DataCube 模型
大数据平台:如 Apache Kylin 专门用于构建和查询 DataCube
科研与工程领域:用于多维数据分析,如遥感数据、气象数据等
为什么它是通用的?
直观性:人类习惯从多个维度思考问题(如“去年北京的手机销量”),DataCube 符合这种思维方式。
高效分析:支持快速切片(slice)、切块(dice)、上卷(roll-up)、下钻(drill-down)等操作。
标准化支持:有标准的语言和模型支持,如 MDX(多维表达式)用于查询 DataCube。
不同实现方式
尽管概念通用,DataCube 的具体实现方式可能不同:
物理立方体:预计算并存储在多维数据库中(如 Essbase)
逻辑立方体:在关系数据库上通过视图或 SQL 模拟(ROLAP)
内存立方体:如 Power Pivot 中的数据模型
只要是涉及“从多个维度分析量化数据”的场景,DataCube 的思想几乎都会出现。
一、Datacube
flowchart LR
%% 数据源(左边)
A[业务数据库\nMySQL/PG]
B[日志/埋点\nNginx/App]
C[Kafka 实时流]
D[离线文件\nCSV/S3]
%% 采集入湖/仓(中间左)
E[DataX\nFlink CDC\nKafka Connect]:::ingest
F[Data Lake\nDelta/Iceberg/Hudi]:::lake
G[数仓明细/宽表层\nHive/Spark/Doris]:::dw
%% 核心:DataCube(正中间高亮)
H[多维分析层\nDataCube / OLAP Cube\nKylin / Doris MV\nClickHouse / Druid / Pinot]:::cube
%% 消费层(右边)
I[Superset\nTableau\nFineBI]:::bi
J[大屏/报表]:::dash
K[Ad-hoc SQL]:::sql
L[API 实时指标]:::api
%% 连线(简化版)
A --> E
B --> E
C --> E
D --> E
E --> F & G
F --> H
G --> H
H --> I & J & K & L
%% 样式美化
classDef ingest fill:#409EFF,color:white,rx:8,ry:8
classDef lake fill:#67C23A,color:white,rx:8,ry:8
classDef dw fill:#E6A23C,color:white,rx:8,ry:8
classDef cube fill:#F56C6C,color:white,font-weight:bold,rx:15,ry:15,stroke:#fff,stroke-width:4px
classDef bi fill:#909399,color:white,rx:8,ry:8
classDef dash fill:#723DFF,color:white,rx:8,ry:8
classDef sql fill:#F783AC,color:white,rx:8,ry:8
classDef api fill:#13CE66,color:white,rx:8,ry:8
%% 高亮核心
style H stroke-dasharray: 8 8
二、维度建模
2.1 星型模型
2.2 雪花模型
数据湖 & 数据仓库:
分析与服务层: